/**
 * 此示例需求描述：快餐店的商业案例
 * 
 * 一个典型的套餐可以是一个汉堡（Burger）和一杯冷饮（Cold drink）。
 * 汉堡（Burger）可以是素食汉堡（Veg Burger）或鸡肉汉堡（Chicken Burger），它们是包在纸盒中。
 * 冷饮（Cold drink）可以是可口可乐（coke）或百事可乐（pepsi），它们是装在瓶子中。
 * 
 * 建造者模式的角色：
 * 1.产品：一个 Meal 类，带有 Item 的 ArrayList。
 *  Meal组成：
 *  a：食物条目。Item 接口和实现 Item 接口的实体类。食物条目包括：
 *      a.1:食物包装。Packing 接口和实现 Packing 接口的实体类，汉堡是包在纸盒中，冷饮是装在瓶子中。
 * 2.抽象建造者：IMealBuilder
 * 2.建造者：通过结合 Item 来创建不同类型的 Meal 对象的 MealBuilder。
 * 3.指挥者：BuilderMain 类。使用 MealBuilder 来创建一个 Meal。
 * 
 * 解释：此案例建造者是创建最终的套餐Meal，可变部分为食物条目与包装的组合。通过代码可以清晰明白建造者是怎么组合生产出最终的Meal的
 */
public class SimpleMain {
    public static void main(String[] args) {
        // 建造者创建套餐
        MealBuilder builder = new MealBuilder();
        Meal chickenMeal = builder.prepareChickenMeal();
        chickenMeal.showItems();

        System.out.println("--------------------------------");

        Meal vegMeal = builder.prepareVegMeal();
        vegMeal.showItems();

    }
}
